package com.happok.onlineclass.usermanagement.verifycode.service;

import com.happok.onlineclass.usermanagement.setting.dto.VerifySmsDTO;
import com.happok.onlineclass.usermanagement.verifycode.dto.FunctionVerifyCodeDTO;
import com.happok.onlineclass.usermanagement.verifycode.dto.TemplateVerifyCodeDTO;

/**
 * 功能说明
 *
 * @author : chenac
 * @version : v1.0
 * @date : 2021/10/12 17:12
 * @updateUser : chenac
 * @updateTime : 2021/10/12 17:12
 * @updateRemark : 无
 * @since : Springboot 2.5.2
 */
public interface VerifyCodeService {
    /**
     * 获取验证码-功能
     *
     * @param verifyCodeDTO
     * @author: chenac
     * @date:  17:13
     * @execption:
     * @return: void
     */
    void getFunctionVerifyCode(FunctionVerifyCodeDTO verifyCodeDTO);

    /**
     * 获取验证码-模板
     *
     * @param verifyCodeDTO
     * @author: chenac
     * @date:  17:13
     * @execption:
     * @return: void
     */
    void getTemplateVerifyCode(TemplateVerifyCodeDTO verifyCodeDTO);

    /**
     * 测试短信验证码
     *
     * @param verifySms
     * @author: chenac
     * @date:  12:24
     * @execption:
     * @return: void
     */
    void verificationSms(VerifySmsDTO verifySms);

    /**
     * 获取验证码-没有返回空
     *
     * @param account
     * @param function
     * @author: chenac
     * @date:  17:17
     * @execption:
     * @return: java.lang.Integer
     */
    Integer verifyCode(String account, String function);

    /**
     * 删除验证码
     *
     * @param account
     * @param function
     * @author: chenac
     * @date:  15:02
     * @execption:
     * @return: void
     */
    void deleteVerifyCode(String account, String function);

    /**
     * 校验验证码
     *
     * @param account
     * @param function
     * @param verifyCode
     * @author: chenac
     * @date:  15:18
     * @execption:
     * @return: void
     */
    void checkVerifyCode(String account, String function, Integer verifyCode);

    /**
     * 获取6位随机数
     *
     * @param
     * @author: chenac
     * @date:  16:23
     * @execption:
     * @return: java.lang.Integer
     */
    String getIntegerRandom();

    /**
     * 获取验证码-空就生成，有就返回有效时间
     *
     * @param account
     * @param function
     * @author: chenac
     * @date:  9:45
     * @execption:
     * @return: java.lang.Integer
     */
    Integer getVerifyCode(String account, String function);
}